BearZPY Blog

Hi, nice to meet you

BearZPY's avatar BearZPY

SQLite 基本操作

SQLite 基本操作

SQLite 是一款轻型的数据库,是遵守ACID的关联式数据库管理系统,它的设计目标是嵌入式的,而且目前已经在很多嵌入式产品中使用了它,它占用资源非常的低,在嵌入式设备中,可能只需要几百K的内存就够了。目前最新的版本是 SQLite3。

SQLite 的特点

  • 轻量级
  • 不需要安装/配置,不依赖其他软件
  • 数据库是单一文件,可以自由复制
  • 跨平台/可移植,支持多种开发语言
  • 弱类型字段
  • 兼容 ACID 事务,允许从多个进程或线程安全访问
  • 开源

常用数据类型

  • VARCHAR(n):长度不固定且其最大长度为 n 的字串,n不能超过 4000
  • CHAR(n):长度固定为n的字串,n不能超过 254
  • INTEGER:值被标识为整数,根据值的大小存储在 1、2、3、4、6 或 8 字节中
  • REAL:所有值都是浮动的数值,被存储为8字节的IEEE浮动标记序号
  • TEXT:值为文本字符串,使用数据库编码存储(TUTF-8, UTF-16BE or UTF-16-LE)
  • BLOB:值是 BLOB 数据块,以输入的数据格式进行存储

命令行操作

在 Android 数据库设计中,如果对数据库有疑问的话,可以将数据库文件复制到电脑上面,在命令行中使用 SQLite3 进行查看。

查看数据库的部分操作

// 打开创建数据库
.open headphones.db

// 查看数据库里存在的表
.tables

// 查看创建数据库时语句
.schema headphones

// ascii 模式显示
.mode ascii

// 打开列名称显示
.header on

// 按列对齐
.mode column

结构化数据库语句


// 创建表
CREATE TABLE headphones (
    _id INTEGER PRIMARY KEY AUTOINCREMENT,
    name TEXT NOT NULL,
    price INTEGER,
    style INTEGER NOT NULL,
    in_stock INTEGER DEFAULT 0,
    description TEXT DEFAULT unknown
    );

// 显示表的列名称属性
PRAGMA TABLE_INFO(headphones);

// 删除整个表
DROP TABLE headphones;

// 从表中选择某列
SELECT <columns> FROM <table_name>;

// 选择表的所有内容
SELECT * FROM headphones;

// 选择 _id == 1 的所有行内容
SELECT * FROM headphones WHERE _id == 1;

// 只选择名字那一列
SELECT name FROM headphones;

// 选择表的所有内容 按名称升序排列
SELECT * FROM headphones ORDER BY name ASC;

// 选择表的所有内容 按名称降序排列
SELECT * FROM headphones ORDER BY name DESC;

// 选择表里 description 列中值为 unknown 的行 按名称降序排列
SELECT name,price FROM headphones WHERE description != "unknown" ORDER BY name DESC;

// 插入对应的数据
INSERT INTO headphones (name,price,style,in_stock)
    VALUES ("mytestcase",0,0,1);

// 更新 _id = 6 列中的 name 为 toupdate
UPDATE headphones SET name = "toupdate" WHERE _id = 6;

// 更新所有的 price 为 100
UPDATE headphones SET price = 100;

// 删除 _id = 5 的行
DELETE FROM headphones WHERE _id = 5;

// 删除表里面所有的内容
DELETE FROM headphones;